<?php


namespace app\back\controller;


use app\back\model\CompanyModel;
use app\middleware\BackAuth;
use think\facade\Validate;
use app\Request;
use think\response\Json;
use think\validate\ValidateRule;

class Company
{
    protected $middleware = [BackAuth::class];

    public function list(Request $request)
    {
        // 获取参数
        $input['limit'] = $request->post('limit');
        $input['page'] = $request->post('page');
        $input['name'] = $request->post('name');
        $input['is_believe'] = $request->post('is_believe');
        // 参数校验
        $validate = Validate::rule([
            'limit' => ValidateRule::isRequire(null, '缺少参数'),
            'page' => ValidateRule::isRequire(null, '缺少参数'),
            'name' => function($value) {
                return $value === null ? '缺少参数' : true ;
            },
            'is_believe' => function($value) {
                return in_array($value, ['', '0', '1'], true) ? true : '不合法数据' ;
            }
        ]);

        if (!$validate->check($input)) {
            return jsonFail($validate->getError());
        }
        // 逻辑处理
        return CompanyModel::list($input,$request->info);
    }

    /**授信公司
     * @param Request $request
     * @return Json
     */
    public function believe(Request $request)
    {
        // 获取参数
        $input['id'] = $request->post('id');
        $input['is_believe'] = $request->post('is_believe');
        // 参数校验
        $validate = Validate::rule([
            'id' => ValidateRule::regex('/^[1-9][0-9]*$/', '不合法数据'),
            'is_believe' => function($value) {
                return in_array($value, ['1', '0'], true) ? true : '不合法参数' ;
            }
        ]);

        if (!$validate->check($input)) {
            return jsonFail($validate->getError());
        }
        // 逻辑处理
        return CompanyModel::believe($input,$request->info);
    }

    /**获取有效的管理员列表
     * @param Request $request
     * @return Json
     */
    public function getAdmin(Request $request)
    {
        // 获取参数
        // 参数校验
        // 逻辑处理
        return CompanyModel::getAdmin($request->info);
    }

    /**绑定司机
     * @param Request $request
     * @return Json
     */
    public function bindDriver(Request $request)
    {
        // 获取参数
        $input['id'] = $request->post('id');
        $input['driver_id'] = $request->post('driver_id');
        // 参数校验
        $validate = Validate::rule([
            'id' => ValidateRule::regex('/^[1-9][0-9]*$/', '不合法数据'),
            'driver_id' => ValidateRule::regex('/^[1-9][0-9]*$/', '不合法数据'),
        ]);

        if (!$validate->check($input)) {
            return jsonFail($validate->getError());
        }
        // 逻辑处理
        return CompanyModel::bindDriver($input,$request->info);
    }

    /**解绑司机
     * @param Request $request
     * @return Json
     */
    public function unbindDriver(Request $request)
    {
        // 获取参数
        $input['id'] = $request->post('id');
        $input['driver_id'] = $request->post('driver_id');
        // 参数校验
        $validate = Validate::rule([
            'id' => ValidateRule::regex('/^[1-9][0-9]*$/', '不合法数据'),
            'driver_id' => ValidateRule::regex('/^[1-9][0-9]*$/', '不合法数据'),
        ]);

        if (!$validate->check($input)) {
            return jsonFail($validate->getError());
        }
        // 逻辑处理
        return CompanyModel::unbindDriver($input,$request->info);
    }

    /**获取有效分拣中心列表以及当前绑定的分拣中心
     * @param Request $request
     * @return Json
     */
    public function getCenter(Request $request)
    {
        // 获取参数
        $input['id'] = $request->post('id');
        // 参数校验
        $validate = Validate::rule([
            'id' => ValidateRule::regex('/^[1-9][0-9]*$/', '不合法数据'),
        ]);

        if (!$validate->check($input)) {
            return jsonFail($validate->getError());
        }
        // 逻辑处理
        return CompanyModel::getCenter($input,$request->info);
    }

    /**编辑分拣中心
     * @param Request $request
     * @return Json
     */
    public function editCenter(Request $request)
    {
        // 获取参数
        $input['id'] = $request->post('id');
        $input['center_ids'] = $request->post('center_ids');
        // 参数校验
        $validate = Validate::rule([
            'id' => ValidateRule::regex('/^[1-9][0-9]*$/', '不合法数据'),
            'center_ids' => ValidateRule::isRequire(null, '缺少参数'),
        ]);

        if (!$validate->check($input)) {
            return jsonFail($validate->getError());
        }
        // 逻辑处理
        return CompanyModel::editCenter($input,$request->info);
    }
}